/*
* Conditions Of Use
*
* This software was developed by employees of the Sigmatrix(Beijing) Corporation.
* This software is provided by sigmatrix as a service and is expressly
* provided "AS IS."  Sigmatrix MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT
* AND DATA ACCURACY.  Sigmatrix does not warrant or make any representations
* regarding the use of the software or the results thereof, including but
* not limited to the correctness, accuracy, reliability or usefulness of
* the software.
*
* Permission to use this software is contingent upon your acceptance
* of the terms of this agreement.
*
*/
package com.sigmatrix.h5.dao;

import java.util.List;

import com.sigmatrix.h5.dto.ProductData;
import com.sigmatrix.h5.entity.Product;
import com.sigmatrix.h5.exception.DaoException;
import com.sigmatrix.sc.jdbc.common.dao.Dao;

/**
 *@ClassName: ProductDao
 *@Description: 产品
 *@author MH
 *@date 2017年8月18日 上午11:36:00
 */
public interface ProductDao extends Dao<Product,Integer>{
	/**
	 * 通过基础数据ID查询
	 *@Title: findByBasicModuleId
	 *@Description: 
	 *@return Product
	 *@author MH
	 *@date 2017年8月18日 上午11:44:37
	 *@param basicModuleId
	 *@return
	 */
	Product findByBasicModuleId(Integer basicModuleId);
	
	/**
	 * 
	 *@Title: findByCode
	 *@Description: TODO()
	 *@return Product
	 *@author gaomingkai
	 *@date 2017年12月26日 下午6:02:26
	 *@param code
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	Product findByCode(final String code, final String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findById
	 *@Description: 根据主键查找产品
	 *@return Product
	 *@author youjun
	 *@date 2017-06-24 17:26:49
	 *@param id
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException 
	 */
	Product findById(final Integer id, final String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findListByCondition
	 *@Description: 根据条件查找产品列表
	 *@return List<Product>
	 *@author youjun
	 *@date 2017-06-24 17:26:49
	 *@param product
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	List<Product> findListByCondition(final Product product, final String enterpriseCode) throws DaoException;

	/**
	 *@Title: findPartColumnListByCondition
	 *@Description: 根据条件查找产品部分列的列表
	 *@return List<ProductData>
	 *@author youjun
	 *@date 2017年6月24日 下午8:27:12
	 *@param product
	 *@param enterpriseCode
	 *@return
	 *@throws DaoException
	 */
	List<ProductData> findPartColumnListByCondition(final Product product, final String enterpriseCode) throws DaoException;
	
	/**
	 *@Title: findAllForSysn
	 *@Description: 查询所有同步使用
	 *@return List<ProductData>
	 *@date 2017年8月12日 下午4:58:19
	 *@param eseCode
	 *@throws DaoException
	 */
	List<ProductData> findAllForSysn(final String eseCode) throws DaoException;
}
